#include "Config.hpp"
#include <iostream>

namespace visionhw
{

    Config::~Config()
    {
        if (_config->_ifs.is_open())
        {
            _config->_ifs.close();
        }
    }

    void Config::setConfigFile(const std::string &filename)
    {
        if (_config == nullptr)
            _config = std::shared_ptr<Config>(new Config);

        _config->_ifs.open(filename);
        if (!_config->_ifs.is_open())
        {
            std::cerr << "open configFile failed \n";
            return;
        }
        if (!_config->_reader.parse(_config->_ifs, _config->_root, false))
        {
            std::cerr << "parse failed \n";
            return;
        }
        
    }

    Json::Value Config::getValue(const std::string &key)
    {
        return _config->_root[key];
    }
    Json::Value Config::getRoot()
    {
        return _config->_root;
    }
    std::shared_ptr<Config> Config::_config = nullptr;
}
